Technical Q&A DV44
PrepareMemoryForIO Options


Q: I am calling PrepareMemoryForIO. What is the meaning of the kIOShareMappingTables bit of the options field of the IOPreparationTable? I've read the documentation in Designing PCI Cards and Drivers for Power Macintosh Computers and it didn't really help.

A: In all existing implementations this bit does nothing. This oversight is an artifact of the difference between the DriverServicesLib model and its implementation on traditional Mac OS. See DTS Q&A DV 43 InterfaceLib and Native Drivers for more information on that topic.

While we're on the subject of PrepareMemoryForIO options, you should note that a number of other options have no effect on current implementations. The full list is given below.

  • kIOShareMappingTables
  • kIOCoherentDataPath
  • kIOTransferIsLogical
  • kIOClientIsUserMode

In addition, the kIOLogicalRanges option must always be set because current implementations do not support preparation based on physical address.

The following options are implemented as documented.

  • kIOMultipleRanges
  • kIOMinimalLogicalMapping
  • kIOIsInput
  • kIOIsOutput

Finally, just in case you're wondering, the following options to CheckpointIO have no effect on current systems.

  • kNextIOIsInput
  • kNextIOIsOutput

The remaining option, kMoreIOTransfers, has its documented effect.

[Sep 22 2000]


Developer Documentation | Technical Notes | Development Kits | Sample Code